package cn.tedu.car.backend.customer.service;

import cn.tedu.car.backend.base.response.PageData;
import cn.tedu.car.backend.customer.pojo.dto.CustomerAddDto;
import cn.tedu.car.backend.customer.pojo.dto.CustomerQueryParam;
import cn.tedu.car.backend.customer.pojo.dto.CustomerRegDto;
import cn.tedu.car.backend.customer.pojo.dto.IdentifyDto;
import cn.tedu.car.backend.customer.pojo.vo.CustomerDetailVo;
import cn.tedu.car.backend.customer.pojo.vo.CustomerListVo;
import cn.tedu.car.backend.customer.pojo.vo.CustomerLoginInfoVO;
import cn.tedu.car.backend.customer.pojo.vo.IdentifyResultVO;

import java.io.IOException;
import java.util.List;

/**
 * @author LLY
 */

public interface CustomerService {
    /**
     * 获取客户列表
     *
     * @param customerQueryParam 查询条件
     * @return 客户列表
     */
    PageData list(CustomerQueryParam customerQueryParam);

    /**
     * 登录
     *
     * @param username 用户名
     * @param password 密码
     * @return 登录信息
     */
    CustomerLoginInfoVO login(String username, String password);

    /**
     * 注册
     *
     * @param customerRegDto 注册信息
     */
    void register(CustomerRegDto customerRegDto);

    /**
     * 发送验证码
     *
     * @param phone 手机号
     */
    void sendCaptcha(String phone);

    /**
     * 手机号登录
     *
     * @param phone 手机号
     * @param code  验证码
     */
    void loginWithPhone(String phone, String code);

    /**
     * 身份认证
     *
     * @param identifyDto 身份认证信息
     */
    void identify(IdentifyDto identifyDto) throws IOException;

    /**
     * 获取客户详情
     *
     * @param id 客户id
     * @return 客户详情
     */
    CustomerDetailVo getCustomerById(Long id);

    /**
     * 禁用客户
     *
     * @param id 客户id
     */
    void changeStateById(Long id);

    /**
     * 添加客户
     *
     * @param customerAddDto 客户信息
     */
    void add(CustomerAddDto customerAddDto);
}
